// 导入axios
import axios from 'axios'
// 导入element的message组件
import { Message } from 'element-ui'
import router from "@/router";



// 创建一个axios实例
const instance = axios.create({
    // baseURL 将自动加在 url`前面，除非 url 是一个绝对 URL。
    // 它可以通过设置一个 baseURL 便于为 axios 实例的方法传递相对 URL
    baseURL: "http://localhost:8080",
    // timeout设置一个请求超时时间，如果请求时间超过了timeout，请求将被中断，单位为毫秒（ms）
    timeout: 60000,
    // headers是被发送的自定义请求头，请求头内容需要根据后端要求去设置，这里我们使用本项目请求头。
    headers: {
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    }
})


//传送json格式的post请求
export const postRequest = (url, params) => {
    return instance.post(
        `${url}`,
        params,
    )
}

//传送json格式的put请求
export const putRequest = (url, params) => {
    return instance.put(
        `${url}`,
        params,
    )
}

//传送json格式的get请求
export const getRequest = (url) => {
    return instance.get(
        `${url}`,
    )
}

//传送json格式的delete请求
export const deleteRequest = (url, params) => {
    return instance.delete(
        `${url}`,
        params,
    )
}

//请求拦截器
instance.interceptors.request.use(config => {
    let token = window.localStorage.getItem('token') || window.sessionStorage.getItem('token')
    if (token) {
        config.headers['token'] = token;
    }
    return config;
}, error => {
    return Promise.reject(error)
})

// 报错响应
instance.interceptors.response.use(
    response => {
        // 对响应数据做处理
        return response;
    },
    error => {
        if (error.response && error.response.status === 401) {
            Message({
                type: 'warning',
                message: '请重新登录！',
                offset: 54
            })
            router.push('/');
        } else {
            return Promise.reject(error);
        }
    }
);



export default instance;